package com.wn.common.db.entity

import android.os.Parcelable
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
import com.wn.common.constant.TABLE_VIDEO_LIST
import kotlinx.parcelize.Parcelize

/**
 * @Author: wn
 * @Date: 2024/12/3 15:16
 * @Description: 视频列表信息
 * @ColumnInfo(name = "first_name") 数据库列的名称  不写默认变量名为列名
 * @SerializedName("is_bind_phone") 属性重命名，可以将json中的属性名转为我们自己自定义的属性名
 * @Embedded 嵌入一个 entity  是一个 完整的 entity 表 宿主 会 将 内嵌表的所有 字段添加到自身中 除了 主键
 * father1 father2 father3 (不添加 son 主键) son2 son3
 */


// 定义数据表，指定表名，如果不指定表名则默认为类名
@Entity(tableName = TABLE_VIDEO_LIST)
@Parcelize
data class VideoInfo(
  // 必须至少要有一个主键，不能为空，autoGenerate表示 cache_key的值是否由数据库自动生成
  @PrimaryKey(autoGenerate = true)
  var id: Long = 0,

  // 如果想改变title这个字段在数据库中的名称，可以使用ColumnInfo来改变，defaultValue指定默认值
  @ColumnInfo(name = "title", defaultValue = "")
  var title: String?,

  var desc: String?,

  var authorName: String?,

  var playUrl: String?,

  var imageUrl: String?,

  // 部分字段不想映射到数据库表中，添加 Ignore 注解忽略，就不会成为数据库表中的类名
//  @Ignore
  var collectionCount: String?,
) : Parcelable